home *** CD-ROM | disk | FTP | other *** search
- 10 ! ************************************************
- 20 ! Example: Wing Stress/Vibration Analysis
- 30 !
- 40 ! This program displays a simulated aircraft
- 50 ! fuselage. When the user clicks one of the
- 60 ! four arrows displayed, the appropriate wing
- 70 ! stress/vibration analysis graph is displayed.
- 80 !
- 90 ! NOTE
- 100 !
- 110 ! You may need to maximize the screen to see
- 120 ! the full picture.
- 130 !
- 140 ! ************************************************
- 150 !
- 160 INTEGER Num_points
- 170 ASSIGN @Panel TO WIDGET "PANEL"
- 180 CONTROL @Panel;SET ("WIDTH":650,"HEIGHT":600)
- 190 CONTROL @Panel;SET ("TITLE":" Example: Wing Stress/Vibration Analysis","SIZE CONTROL":"RESIZE CHILDREN")
- 200 CONTROL @Panel;SET ("SIZE CONTROL":"RESIZE CHILDREN")
- 210 CONTROL @Panel;SET ("SYSTEM MENU":"Quit")
- 220 ON EVENT @Panel,"SYSTEM MENU" GOTO Finis
- 230 !
- 240 ASSIGN @Label TO WIDGET "LABEL";SET ("X":100,"Y":5,"WIDTH":400),PARENT @Panel
- 250 CONTROL @Label;SET ("VALUE":"Click arrows to display results")
- 260 !
- 270 ASSIGN @Bitmap TO WIDGET "BITMAP";SET ("X":15,"Y":40,"BORDER":0,"RETAIN RASTER":1,"BITMAP FILE":"HELP_EX/WINGS.BMP","LABEL":"XRJ-711 Wind Tunnel Test"),PARENT @Panel
- 280 !
- 290 ON EVENT @Bitmap,"MOUSE CLICKED" GOSUB Mouse_click
- 300 Looping: GOTO Looping
- 310 !
- 320 Mouse_click: !
- 330 INTEGER Mouse_pos(1:2),X,Y
- 340 STATUS @Bitmap;RETURN ("MOUSE CLICK":Mouse_pos(*))
- 350 X=Mouse_pos(1)
- 360 Y=Mouse_pos(2)
- 370 IF X>=194 AND X<=213 AND Y>=230 AND Y<=260 THEN
- 380 GOSUB Sbup_disp
- 390 ELSE
- 400 IF X>=194 AND X<=213 AND Y>=292 AND Y<=322 THEN
- 410 GOSUB Sbdn_disp
- 420 ELSE
- 430 IF X>=450 AND X<=470 AND Y>=230 AND Y<=260 THEN
- 440 GOSUB Prup_disp
- 450 ELSE
- 460 IF X>=450 AND X<=470 AND Y>=292 AND Y<=322 THEN
- 470 GOSUB Prdn_disp
- 480 ELSE
- 490 DISP
- 500 END IF
- 510 END IF
- 520 END IF
- 530 END IF
- 540 RETURN
- 550 !
- 560 ! Data Section
- 570 !
- 580 Sbup_num_points: DATA 9
- 590 Sbup_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
- 600 Sbup_y_data: DATA 0, 30, 400, 20, 300, 5, 7, 4, 1
- 610 !
- 620 Sbdn_num_points: DATA 9
- 630 Sbdn_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
- 640 Sbdn_y_data: DATA 0, 60, 300, 40, 250, 5, 7, 4, 1
- 650 !
- 660 Prup_num_points: DATA 9
- 670 Prup_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
- 680 Prup_y_data: DATA 0, 35, 450, 30, 200, 5, 7, 4, 1
- 690 !
- 700 Prdn_num_points: DATA 9
- 710 Prdn_x_data: DATA 0, 50, 100, 150, 200, 250, 300, 350, 400
- 720 Prdn_y_data: DATA 0, 40, 350, 35, 230, 5, 7, 4, 1
- 730 !
- 740 ! Display Section
- 750 !
- 760 Sbup_disp:!
- 770 ASSIGN @Sbup_panel TO WIDGET "PANEL";SET ("X":4,"Y":4,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
- 780 CONTROL @Sbup_panel;SET ("TITLE":"Starboard Wing: Upper Skin Strain")
- 790 ASSIGN @Sbup_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":454,"HEIGHT":265,"VISIBLE":0),PARENT @Sbup_panel
- 800 CONTROL @Sbup_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
- 810 CONTROL @Sbup_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
- 820 RESTORE Sbup_num_points
- 830 READ Num_points
- 840 ON ERROR GOTO Sbup_alloc
- 850 DEALLOCATE Sbup_x(*),Sbup_y(*)
- 860 !
- 870 Sbup_alloc: OFF ERROR
- 880 ALLOCATE INTEGER Sbup_x(1:Num_points),Sbup_y(1:Num_points)
- 890 RESTORE Sbup_x_data
- 900 READ Sbup_x(*)
- 910 RESTORE Sbup_y_data
- 920 READ Sbup_y(*)
- 930 CONTROL @Sbup_xy;SET ("X DATA":Sbup_x(*),"Y DATA":Sbup_y(*),"VISIBLE":1)
- 940 ASSIGN @Sbup_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Sbup_panel
- 950 ON EVENT @Sbup_button,"ACTIVATED" GOSUB Sbup_done
- 960 RETURN !sbup_disp
- 970 !
- 980 Sbup_done: ASSIGN @Sbup_panel TO *
- 990 DEALLOCATE Sbup_x(*),Sbup_y(*)
- 1000 RETURN
- 1010 !
- 1020 Sbdn_disp:!
- 1030 ASSIGN @Sbdn_panel TO WIDGET "PANEL";SET ("X":4,"Y":420,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
- 1040 CONTROL @Sbdn_panel;SET ("TITLE":"Starboard Wing: Lower Skin Strain")
- 1050 ASSIGN @Sbdn_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":450,"HEIGHT":265,"VISIBLE":0),PARENT @Sbdn_panel
- 1060 CONTROL @Sbdn_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
- 1070 CONTROL @Sbdn_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
- 1080 RESTORE Sbdn_num_points
- 1090 READ Num_points
- 1100 ON ERROR GOTO Sbdn_alloc
- 1110 DEALLOCATE Sbdn_x(*),Sbdn_y(*)
- 1120 !
- 1130 Sbdn_alloc: OFF ERROR
- 1140 ALLOCATE INTEGER Sbdn_x(1:Num_points),Sbdn_y(1:Num_points)
- 1150 RESTORE Sbdn_x_data
- 1160 READ Sbdn_x(*)
- 1170 RESTORE Sbdn_y_data
- 1180 READ Sbdn_y(*)
- 1190 CONTROL @Sbdn_xy;SET ("X DATA":Sbdn_x(*),"Y DATA":Sbdn_y(*),"VISIBLE":1)
- 1200 ASSIGN @Sbdn_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Sbdn_panel
- 1210 ON EVENT @Sbdn_button,"ACTIVATED" GOSUB Sbdn_done
- 1220 RETURN
- 1230 !
- 1240 Sbdn_done: ASSIGN @Sbdn_panel TO *
- 1250 DEALLOCATE Sbdn_x(*),Sbdn_y(*)
- 1260 RETURN
- 1270 !
- 1280 Prup_disp:!
- 1290 ASSIGN @Prup_panel TO WIDGET "PANEL";SET ("X":535,"Y":4,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
- 1300 CONTROL @Prup_panel;SET ("TITLE":"Port Wing: Upper Skin Strain")
- 1310 ASSIGN @Prup_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":454,"HEIGHT":265,"VISIBLE":0),PARENT @Prup_panel
- 1320 CONTROL @Prup_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
- 1330 CONTROL @Prup_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
- 1340 RESTORE Prup_num_points
- 1350 READ Num_points
- 1360 ON ERROR GOTO Prup_alloc
- 1370 DEALLOCATE Prup_x(*),Prup_y(*)
- 1380 !
- 1390 Prup_alloc: OFF ERROR
- 1400 ALLOCATE INTEGER Prup_x(1:Num_points),Prup_y(1:Num_points)
- 1410 RESTORE Prup_x_data
- 1420 READ Prup_x(*)
- 1430 RESTORE Prup_y_data
- 1440 READ Prup_y(*)
- 1450 CONTROL @Prup_xy;SET ("X DATA":Prup_x(*),"Y DATA":Prup_y(*),"VISIBLE":1)
- 1460 ASSIGN @Prup_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Prup_panel
- 1470 ON EVENT @Prup_button,"ACTIVATED" GOSUB Prup_done
- 1480 RETURN
- 1490 !
- 1500 Prup_done: ASSIGN @Prup_panel TO *
- 1510 DEALLOCATE Prup_x(*),Prup_y(*)
- 1520 RETURN
- 1530 !
- 1540 Prdn_disp:!
- 1550 ASSIGN @Prdn_panel TO WIDGET "PANEL";SET ("X":535,"Y":420,"WIDTH":485,"HEIGHT":345,"SIZE CONTROL":"RESIZE CHILDREN")
- 1560 CONTROL @Prdn_panel;SET ("TITLE":"Port Wing: Lower Skin Strain")
- 1570 ASSIGN @Prdn_xy TO WIDGET "XY GRAPH";SET ("X":10,"Y":10,"WIDTH":450,"HEIGHT":265,"VISIBLE":0),PARENT @Prdn_panel
- 1580 CONTROL @Prdn_xy;SET ("CURRENT AXIS":"X","AUTOSCALE":1,"AXIS LABEL":"Vibration Frequency (Hz)")
- 1590 CONTROL @Prdn_xy;SET ("CURRENT AXIS":"Y","AUTOSCALE":1,"AXIS LABEL":"Micro Strain")
- 1600 RESTORE Prdn_num_points
- 1610 READ Num_points
- 1620 ON ERROR GOTO Prdn_alloc
- 1630 DEALLOCATE Prdn_x(*),Prdn_y(*)
- 1640 !
- 1650 Prdn_alloc: OFF ERROR
- 1660 ALLOCATE INTEGER Prdn_x(1:Num_points),Prdn_y(1:Num_points)
- 1670 RESTORE Prdn_x_data
- 1680 READ Prdn_x(*)
- 1690 RESTORE Prdn_y_data
- 1700 READ Prdn_y(*)
- 1710 CONTROL @Prdn_xy;SET ("X DATA":Prdn_x(*),"Y DATA":Prdn_y(*),"VISIBLE":1)
- 1720 ASSIGN @Prdn_button TO WIDGET "PUSHBUTTON";SET ("X":200,"Y":278,"HEIGHT":30,"LABEL":"DONE"),PARENT @Prdn_panel
- 1730 ON EVENT @Prdn_button,"ACTIVATED" GOSUB Prdn_done
- 1740 RETURN
- 1750 !
- 1760 Prdn_done: ASSIGN @Prdn_panel TO *
- 1770 DEALLOCATE Prdn_x(*),Prdn_y(*)
- 1780 RETURN
- 1790 !
- 1800 Finis:!
- 1810 ASSIGN @Panel TO *! Delete PANEL widget
- 1820 END
-